package com.yungu.swift.monitor.model;

import lombok.Data;

import java.io.Serializable;

/**
 * @author : cuixiuyin
 * @date : 2019/10/12
 */
@Data
public class Metric implements Serializable {

    /**
     * 应用状态
     */
    private String status;
    /**
     * 指标记录时间
     */
    private Long timestamp = System.currentTimeMillis();

    /*内存*/

    /**
     * 机器内存，单位 KB
     */
    private Long machineMemory;
    /**
     * 机器剩余内存，单位 KB
     */
    private Long machineFreeMemory;
    /**
     * 应用内存容量，单位：KB
     */
    private Integer memory;
    /**
     * 应用剩余内存容量，单位：KB
     */
    private Integer freeMemory;
    /**
     * 应用堆内存容量，单位：KB
     */
    private Integer heapMemory;
    /**
     * 应用堆使用内存容量，单位：KB
     */
    private Integer heapUsedMemory;
    /**
     * 应用栈内存容量，单位：KB
     */
    private Integer nonHeapMemory;
    /**
     * 应用栈使用内存容量，单位：KB
     */
    private Integer nonHeapUsedMemory;


    /*磁盘*/
    /**
     * 磁盘容量，单位：KB
     */
    private Long disk;

    /**
     * 空闲磁盘容量，单位 KB
     */
    private Long freeDisk;

    /*CPU*/
    /**
     * CPU 核心数
     */
    private Integer processors;
    /**
     * cpu 使用率
     */
    private Double idle = 0.0D;

    /*GC 信息*/
    /**
     * 年轻代 gc 次数
     */
    private Integer youngGcCount = 0;
    /**
     * 年轻待 gc 耗时
     */
    private Integer youngGcTime = 0;
    /**
     * 老年代 gc 次数
     */
    private Integer oldGcCount = 0;
    /**
     * 老年代 gc 耗时
     */
    private Integer oldGcTime = 0;

    /*线程数统计*/
    /**
     * 当前线程数量
     */
    private Integer currentThreads;

}
